// 创建用户相关的小仓库
import { defineStore } from 'pinia';
import { reqLogin } from '@/api/user';
// 引入数据类型
import type { loginForm, loginResponseData } from '@/api/user/type';
import type { userState } from './types/type';
// 引入操作本地存储的方法
import { SET_TOKEN, GET_TOKEN } from '@/utils/tokens';
// 引入路由（常量路由）
import { constantRoute } from '@/router/routes';

let useUserStore = defineStore('User', {
  // 数据
  state: (): userState => {
    return {
      token: GET_TOKEN(),
      menuRoutes: constantRoute, //仓库存储生成菜单需要数组（路由）
    };
  },
  // 异步|逻辑的地方
  actions: {
    async userLogin(data: loginForm) {
      let result: loginResponseData = await reqLogin(data);
      if (result.code === 200) {
        // 弱类型，保证是字符串
        this.token = result.data.token as string;
        SET_TOKEN(result.data.token as string);
        // 返回成功的promise
        return 'ok';
      } else {
        return Promise.reject(new Error(result.data.message));
      }
    },
  },
  getters: {},
});

export default useUserStore;
